package com.sdehualu.utils;

import org.json.JSONObject;

/**
 * @Author: 吴敬超
 * @Date: 2021/7/27 9:28
 */
public class JsonUtils {


    /**
     * 使用 net.minidev.json 在集群上运行会出现 java.lang.String cannot be cast to net.minidev.json.JSONObject
     *
     * @param strjson
     * @param inputfileurl
     * @param inputfile
     */
    // public void jsonfile(String strjson, String inputfileurl, String inputfile) {
    //
    //
    //     try {
    //         HDFSUtils fileflag = new HDFSUtils();
    //
    //
    //         JSONParser jsonParser = new JSONParser();
    //
    //         JSONObject jsonObj = (JSONObject) jsonParser.parse(strjson);
    //
    //         // jsonObj.getAsStringAsString()
    //
    //         //存储方式(0_磁盘;1_hdfs;2_s3)
    //         String filetype = jsonObj.getAsString("filetype");
    //         System.out.println(filetype);
    //         //filetype.equals("0")
    //         if ("0".equals(filetype)) {
    //             //      文件在磁盘上，从磁盘传到hdfs
    //
    //             System.out.println("文件在磁盘上，从磁盘传到hdfs");
    //             System.exit(1);
    //
    //             String localfilepath = jsonObj.getAsString("filepath");
    //             boolean localhdfsflag = fileflag.upfile(inputfileurl, localfilepath, inputfile);
    //
    //             if (!localhdfsflag) {
    //
    //                 System.out.println("local file up to hdfs false");
    //                 System.exit(1);
    //             }
    //
    //             //    filetype.equals("2")
    //         } else if ("2".equals(filetype)) {
    //             //      文件在s3上，从s3下载文件上传hdfs
    //
    //             System.out.println("文件在s3上，从s3下载文件上传hdfs");
    //
    //             String endpoint = jsonObj.getAsString("endpoint");
    //             System.out.println(endpoint);
    //
    //             String accessKey = jsonObj.getAsString("accessKey");
    //             System.out.println(accessKey);
    //
    //             String secretKey = jsonObj.getAsString("secretKey");
    //             System.out.println(secretKey);
    //
    //             String bucketName = jsonObj.getAsString("bucketName");
    //             System.out.println(bucketName);
    //
    //             String protocol = jsonObj.getAsString("protocol");
    //             System.out.println(protocol);
    //
    //             String s3path = jsonObj.getAsString("s3path");
    //             System.out.println(s3path);
    //
    //             S3Utils s3Utils = new S3Utils(endpoint, accessKey, secretKey, bucketName, protocol);
    //             boolean s3uphdfs = s3Utils.uphdfs(inputfileurl, s3path, inputfile);
    //
    //             if (!s3uphdfs) {
    //
    //                 System.out.println("s3 file up to hdfs false");
    //                 System.exit(1);
    //             }
    //
    //         }
    //     } catch (ParseException e) {
    //         e.printStackTrace();
    //         System.exit(1);
    //     }
    //
    // }
    public void jsonfile(String strjson, String inputfileurl, String inputfile) {


        try {
            HDFSUtils fileflag = new HDFSUtils();

            JSONObject jsonObj = new JSONObject(strjson);


            //存储方式(0_磁盘;1_hdfs;2_s3)
            String filetype = jsonObj.getString("filetype");
            System.out.println(filetype);
            //filetype.equals("0")
            if ("0".equals(filetype)) {
                //      文件在磁盘上，从磁盘传到hdfs

                System.out.println("文件在磁盘上，从磁盘传到hdfs");
                // System.exit(1);

                String localfilepath = jsonObj.getString("filepath");
                boolean localhdfsflag = fileflag.upfile(inputfileurl, localfilepath, inputfile);

                if (!localhdfsflag) {

                    System.out.println("local file up to hdfs false");
                    System.exit(1);
                }

                //    filetype.equals("2")
            } else if ("2".equals(filetype)) {
                //      文件在s3上，从s3下载文件上传hdfs

                System.out.println("文件在s3上，从s3下载文件上传hdfs");

                String endpoint = jsonObj.getString("endpoint");
                System.out.println(endpoint);

                String accessKey = jsonObj.getString("accessKey");
                System.out.println(accessKey);

                String secretKey = jsonObj.getString("secretKey");
                System.out.println(secretKey);

                String bucketName = jsonObj.getString("bucketName");
                System.out.println(bucketName);

                String protocol = jsonObj.getString("protocol");
                System.out.println(protocol);

                String s3path = jsonObj.getString("s3path");
                System.out.println(s3path);

                S3Utils s3Utils = new S3Utils(endpoint, accessKey, secretKey, bucketName, protocol);
                boolean s3uphdfs = s3Utils.uphdfs(inputfileurl, s3path, inputfile);

                if (!s3uphdfs) {

                    System.out.println("s3 file up to hdfs false");
                    System.exit(1);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

    }
    //
    // public static void main(String[] args) {
    //
    //     System.out.println("*********Start****************");
    //
    //
    //     JsonUtils jsonUtils=new JsonUtils();
    //     jsonUtils.jsonfile("{\"filetype\":\"0\",\"filepath\":\"/root/B.E.13.B1850C5.ne120_t12.sehires38.003.sunway_02.rtm.h0.0022-02.nc\",\"endpoint\":\"10.150.41.201:9000\",\"accessKey\":\"kKBGW2W6vp09hPPZ\",\"secretKey\":\"y01gXuXKawacRYtkS75iVjX7m9c9IdTy\",\"bucketName\":\"test\",\"protocol\":\"https\"}","","");
    //     System.out.println("*********end****************");
    // }


}
